]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
texture-cache: Load bound surfaces into StWidgets
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 8 Mar 2019 13:06:38 +0000 (14:06 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Fri, 8 Mar 2019 15:20:21 +0000 (16:20 +0100)
Using widgets instead of plain actors will allow us to set the size
from CSS.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1027

src/shell-app.c
src/st/st-texture-cache.c
src/st/st-texture-cache.h

index 3f91613fabfc78fb05cc3404694eadf00c1308d5..e0b925b5f032103279e382b322fc5dd858bf89bb 100644 (file)
@@ -184,7 +184,7 @@ window_backed_app_get_icon (ShellApp *app,
                             int       size)
 {
   MetaWindow *window = NULL;
-  ClutterActor *actor;
+  StWidget *widget;
   gint scale;
   ShellGlobal *global;
   StThemeContext *context;
@@ -204,16 +204,18 @@ window_backed_app_get_icon (ShellApp *app,
 
   if (window == NULL)
     {
+      ClutterActor *actor;
+
       actor = clutter_actor_new ();
       g_object_set (actor, "opacity", 0, "width", (float) size, "height", (float) size, NULL);
       return actor;
     }
 
-  actor = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
-                                                        G_OBJECT (window),
-                                                        "icon",
-                                                        size);
-  return actor;
+  widget = st_texture_cache_bind_cairo_surface_property (st_texture_cache_get_default (),
+                                                         G_OBJECT (window),
+                                                         "icon",
+                                                         size);
+  return CLUTTER_ACTOR (widget);
 }
 
 /**
index a9688ec60b4765548a26a53048233e7fb0371be1..fa5b1f04a4e5545c8f0f9898422a1acdb5395656 100644 (file)
@@ -767,27 +767,30 @@ st_texture_cache_free_bind (gpointer data)
  * If the source object is destroyed, the texture will continue to show the last
  * value of the property.
  *
- * Return value: (transfer none): A new #ClutterActor
+ * Return value: (transfer none): A new #StWidget
  */
-ClutterActor *
+StWidget *
 st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
                                               GObject           *object,
                                               const char        *property_name,
                                               gint               size)
 {
-  ClutterActor *actor;
+  StWidget *widget;
   gchar *notify_key;
   StTextureCachePropertyBind *bind;
 
-  actor = create_invisible_actor ();
-  clutter_actor_set_size (actor, size, size);
+  widget = g_object_new (ST_TYPE_WIDGET,
+                         "opacity", 0,
+                         "width", (float)size,
+                         "height", (float)size,
+                         NULL);
 
   bind = g_slice_new0 (StTextureCachePropertyBind);
   bind->cache = cache;
-  bind->actor = actor;
+  bind->actor = CLUTTER_ACTOR (widget);
   bind->size = size;
   bind->source = object;
-  g_object_weak_ref (G_OBJECT (actor), st_texture_cache_bind_weak_notify, bind);
+  g_object_weak_ref (G_OBJECT (widget), st_texture_cache_bind_weak_notify, bind);
   bind->weakref_active = TRUE;
 
   st_texture_cache_reset_texture (bind, property_name);
@@ -797,7 +800,7 @@ st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
                                                   bind, (GClosureNotify)st_texture_cache_free_bind, 0);
   g_free (notify_key);
 
-  return actor;
+  return widget;
 }
 
 /**
index a3311a86290398d25b5f1ad4b3ac34280726313a..11d1c4e640bfc1796ea4f2dc5bb6aea3a4d54131 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <st/st-types.h>
 #include <st/st-theme-node.h>
+#include <st/st-widget.h>
 
 #define ST_TYPE_TEXTURE_CACHE                 (st_texture_cache_get_type ())
 G_DECLARE_FINAL_TYPE (StTextureCache, st_texture_cache,
@@ -63,10 +64,10 @@ st_texture_cache_load_sliced_image (StTextureCache *cache,
                                     GFunc           load_callback,
                                     gpointer        user_data);
 
-ClutterActor *st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
-                                                            GObject           *object,
-                                                            const char        *property_name,
-                                                            gint               size);
+StWidget *st_texture_cache_bind_cairo_surface_property (StTextureCache    *cache,
+                                                        GObject           *object,
+                                                        const char        *property_name,
+                                                        gint               size);
 
 ClutterActor *st_texture_cache_load_gicon (StTextureCache *cache,
                                            StThemeNode    *theme_node,